package ar.edu.utn.frba.proyecto.seleccion;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

import ar.edu.utn.frba.proyecto.interfaces.Funcionable;
import ar.edu.utn.frba.proyecto.interfaces.Seleccionable;

public class Ranking implements Seleccionable {

	@Override
	public Byte[][] seleccionar(Byte[][] info, int cantidadElementosSalida,
			Funcionable func) {
		List<Order> elements= new ArrayList<Order>();
		Byte[][] result= new Byte[cantidadElementosSalida][];
		for (int i = 0; i < info.length; i++) {
			elements.add(new Order(i, func.funcion(info[i])));
		}
		Collections.sort(elements);
		for (int i=0; i < cantidadElementosSalida; i++){
			result[i]=info[elements.get(i).orden];
		}
		
		return result;
	}
	
	public class Order implements Comparable<Order>{
		public int orden;
		public double valor;
		public Order(int ord, double val){
			orden=ord;
			valor=val;
		}
		@Override
		public int compareTo(Order o) {
			if (this.valor<o.valor){
				return 1;
			} else {
				return -1;
			}
		}
		
	}

}
